| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | #ifndef LINE_KIT_DEMOS_DESERT_PILLAR_INCLUDED#define LINE_KIT_DEMOS_DESERT_PILLAR_INCLUDED#include "Noise/ClassicNoise3D.hlsl"float Hash(float x) {    float p = 1;    #if defined(_TYPE_A)        p = 43.5453;    #endif    return frac(sin(x) * p) * 10;}void PillarColor_float(float2 UV, float3 ObjectPositionWS, float3 ObjectScale, float3 PositionWS, float3 NormalWS,                       float3 LightDirection, float LightAttenuation, out float3 Color) {    float noise = 0;    const float hash = Hash(ObjectPositionWS.x + ObjectPositionWS.y + ObjectPositionWS.z);    const float3 p = (PositionWS + hash) / ObjectScale * _ScaleFactor;    #if defined(_TYPE_A)        noise += ClassicNoise(p * _NoiseScale1 * 1.0) * 1.0;        noise += ClassicNoise(p * _NoiseScale2 * 2.0) * 0.5;    #elif defined(_TYPE_B)        noise = ClassicNoise(p.y * 2 + atan(p.x / p.z) * 50 * _NoiseScale1);    #elif defined(_TYPE_C)        noise = ClassicNoise(p.y * _NoiseScale1.x +                             ClassicNoise((UV.x * _NoiseScale1.y *                                          sin(p.y * _NoiseScale2.z)) * _NoiseScale2.x) *                             _NoiseScale2.y);    #endif    const float section23 = step(_Distribution.x, noise);    const float section3 = step(_Distribution.y, noise);    Color = lerp(_Color1, lerp(_Color2, _Color3, section3), section23).rgb;    // Apply _ColorTop to the faces pointing up.    const float3 up = float3(0, 1, 0);    const float isTop = step(1 - _TopSize, dot(up, NormalWS));    Color = lerp(Color, _ColorTop, isTop);    const float shadowStrength = _ShadowStrength;    const float shadowSize = _ShadowSize;    const float shadowSharpness = _ShadowSharpness;    const float3 shadowDirection = normalize(-LightDirection + NormalWS * (1 - shadowSize));    float shadow = saturate(dot(shadowDirection, NormalWS));    const float shadowBand = (1.0 - shadowSharpness) * 0.5;    shadow = smoothstep(shadowSize - shadowBand, shadowSize + shadowBand, shadow);    shadow = lerp(1, shadow, shadowStrength);    shadow = min(shadow, LightAttenuation);    shadow = 1 - shadow;    // Give shadow tint of _ShadowTint and blend it with the color.    Color = lerp(Color, _ShadowTint.rgb, shadow * _ShadowTint.a);}#endif // LINE_KIT_DEMOS_DESERT_PILLAR_INCLUDED
 |